#include "ope.h"

void login(int sockfd);

int main(int argc, char const *argv[])
{
    if(argc < 3){
        fprintf(stderr,"Usage:%s <ip> <port>\n",argv[0]);
        exit(1);
    }
    
    int sockfd;
    struct sockaddr_in serveraddr;
    socklen_t addrlen = sizeof(struct sockaddr_in);

    //第一步：创建套接字
    if((sockfd = socket(AF_INET, SOCK_STREAM, 0)) == -1)
    {
        ERRLOG("socket error");
    }

    //第二步：填充服务器网络信息结构体
    //inet_addr：将点分十进制ip地址转化为无符号32位整形数据
    //htons：将主机字节序转化为网络字节序
    //atoi：将数字型字符串转化为整形数据   "1568" --> 1568
    serveraddr.sin_family = AF_INET;
    serveraddr.sin_addr.s_addr = inet_addr(argv[1]);
    serveraddr.sin_port = htons(atoi(argv[2]));

    //第三步：向服务器发送连接请求
    if(connect(sockfd, (struct sockaddr *)&serveraddr, addrlen) == -1)
    {
        ERRLOG("connect error");
    }
    printf("connect succesful!\n");

    login(sockfd);
    close(sockfd);
    return 0;
}

void login(int sockfd){
    //界面
    printf("********************************************\n");
	printf("********************************************\n");
	printf("**          欢迎使用员工管理系统          **\n");
	printf("********************************************\n");
	printf("********************************************\n");
    //接收信息
    int jod;
    char pwd[20];
    USER user;
    printf("请输入工号》》");
    scanf("%d",&jod);
    getchar();
    printf("请输入密码》》");
    scanf("%s",pwd);
    getchar();
    //填充消息结构体
    MSG msg;
    msg.ope = LOGIN;
    msg.Usemsg.job = jod;
    strcpy(msg.Usemsg.pwd,pwd);
    //发送消息
    send(sockfd, &msg, sizeof(MSG), 0);
    //接收返回的消息，判断用户类型
    memset(&user,0,sizeof(USER));
    recv(sockfd,&user,sizeof(user),0);
    printf("%c\n",user.type);
    if(user.type == '1'){
        admin_open(sockfd,&msg,&user);
    }else if(user.type == '0'){
        staff_open(sockfd,&msg,&user);
    }else{
        printf("%s\n",user.des);
    }
}